As advances continue to be made in the area of semiconductor memory devices, high capacity and low cost will be increasingly important. In particular, it will be necessary to create memory devices for which the testing of the device must be minimized in order to minimize costs. Current memory testing costs are significant and are expected to grow as the capacity of the devices grows. The cost of the testing can be estimated by dividing the annual amortized plus variable costs of the test equipment by the number of devices tested per year. The higher the memory's capacity, the more storage locations that must be tested, and the longer the testing operation will take. As memory devices enter the Gigabyte range and larger, the number of devices that a given piece of test equipment can test in a given period of time will go down. As a result, the cost per unit attributable to testing should rise. If testing is to be reduced or eliminated while maintaining high manufacturing yields, a new approach to error correcting will have to be employed.
The prior art includes many approaches for correcting errors in memory devices. This is typically accomplished by identifying faults and substituting for them. One approach to error correcting is to thoroughly test the memory device at the time of manufacture, to identify the points of failure within the device and to remap, rewire or reconfigure the device to substitute extra circuitry included in the device for the defective circuits. This can done at the time of manufacture by laser burning the wiring so as to make the circuit substitution. However, this requires that each device be thoroughly tested in order to identify the locations of the faults and this extensive testing can be very expensive, especially when the number of bytes of memory is very large. The subsequent post-manufacturing error correcting of this approach further increases the cost of the device.
Alternatively, logic can be incorporated into the device that can maintain a table of defective bit locations and dynamically substitute functioning storage bits for the bits determined to be defective, and this determination can be made during device operation. But, this requires that the spare bits, at least, be tested for proper operation and each memory must undergo self analysis before it can be used or during ongoing operation of the device. Average device density is also reduced as chip area is consumed by the fault detection and correction circuitry.
Rotating storage media, such as some magnetic disks, CD-ROM and DVD deals with this problem by including enough error correcting bits to fix a predetermined number of flawed bits. With this class of storage device, the individual data bits need not be tested for correctness because the likely worst-case number of bad bits has been calculated in advance and an error correcting algorithm (along with its necessary number of error correcting bits) is selected to ensure that this worst-case number of bad bits can be corrected. In this way, the cost of testing vast quantities of data bits can be avoided along with the associated testing costs. This approach is especially useful for storage devices that operate on data in large blocks or sectors where error correcting techniques are most efficient. Typically, as the size of a block of data increases, the number of error correcting bits increases more slowly; this results in a smaller percentage of error correcting bits as the size of the data block grows. This method of error correcting in a block of data works as long as the number of bad bits does not exceed the correctable number of bad bits as determined by the error correcting algorithm and the number of available error correcting bit.
Semiconductor memories are typically laid out as a two dimensional array having a plurality of row lines and column lines. While it is possible that any given bit in the array is flawed and inoperative, one must also worry about other failure modes. One common failure mode occurs when one of these rows or columns has a break in it thereby making a portion of the array addressed by that row or column inaccessible. Alternatively, another common failure mode occurs when a short circuit exists between adjacent rows, adjacent columns, or a row and a column thereby making it impossible to separately address bits accessed by the shorted together rows or columns. In both of these failure modes, large numbers of data bits can be inaccessible (i.e., all the bits that would be accessed by the flawed row or column). Therefore, as with the application of error correcting for CD-ROM and DVD, too many bits may be lost in a given block of bits for the error correcting algorithm and error correcting bits to be able to correct for these errors. Furthermore, some memories are laid out in more than two dimensions; a third dimension (e.g., vertical stacking where the layers are a third dimension or tiling where the tile selection is a third dimension or both where the stacking and tiling form third and forth dimensions).
Presently, in some applications such as digital photography and music and video playback, to name a few, memory is so expensive that its cost often greatly exceeds the value of the data contained within it. Since data in these examples is accessed in as large blocks, CD-ROM and DVD have become popular because this media is inexpensive. However, CD-ROM and DVD are inconvenient because they are fragile and consume large amounts of power due to their lasers, motors and servo mechanisms.
To better support ECC efficiency, a diagonal access technique (as is disclosed in U.S. Pat. No. 7,149,394 to Shepard, the entire disclosure of which is hereby incorporated by reference herein) can be employed which requires that both the word-line and bit-line advance while a data block is accessed. However, advancing both the word-line and the bit-line is an operation that requires more work than simple incrementing the memory address. Furthermore, locating a memory location somewhere within a data block that is along a diagonal path (or other path according to U.S. Pat. No. 7,149,394) can result in an incorrect location being accessed if one is not careful.
What is needed is an inexpensive memory device where the memory device will cost less than the data stored therein, particularly for those large data applications that happen to access data in large blocks, for which error correcting can be implemented without having to extensively test the device at the time of manufacture and which can be effective for the expected worst case number of bad bits even if row or column line breaks or shorts exist. Furthermore, this needed memory device should facilitate a random-access mode to enable updating just a portion of a data block (as well as its ECC bits) for reading and writing for more efficient operation.